//package cn.fl.mcr.controller;
//
//import cmm.comm.facade.upload.constant.SysUlFilesRecConstant;
//import cmm.mid.core.framework.dto.DataResultDTO;
//import cmm.mid.core.framework.page.DataResultVO;
//import cmm.mid.core.framework.page.ListPageVO;
//import cn.cmm.base.framework.utils.BaseLogUtils;
//import cn.cmm.cache.framework.utils.PropertiesCacheUtils;
//import cn.fl.framework.base.context.CurrentThreadContext;
//import cn.fl.mcr.vo.McrCouponTableVO;
//import cn.fl.spl.utils.FileUtil;
//import cn.lb.framework.poi.excel.ExcelImportUtil;
//import cn.lb.framework.poi.excel.entity.ImportParams;
//import cn.lionbridgecapital.loan.model.base.Pager;
//import cn.lionbridgecapital.loan.model.condition.McrCouponMainQC;
//import cn.lionbridgecapital.loan.model.dto.McrCouponDTO;
//import cn.lionbridgecapital.loan.model.dto.McrCouponRuleDTO;
//import cn.lionbridgecapital.loan.model.enu.*;
//import cn.lionbridgecapital.loan.model.exception.BaseException;
//import cn.lionbridgecapital.loan.model.utils.CollectionUtils;
//import cn.lionbridgecapital.loan.service.api.IMcrCouponApiService;
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.propertyeditors.CustomDateEditor;
//import org.springframework.web.bind.ServletRequestDataBinder;
//import org.springframework.web.bind.annotation.InitBinder;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.servlet.ModelAndView;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author yangqh521
// * @date 2020/5/18
// * @desp 优惠券主表列表
// */
//@RestController
//@RequestMapping("/mcr/mcrCouponMain")
//public class McrCouponMainController {
//
//    private static final Logger logger = LoggerFactory.getLogger(McrCouponMainController.class);
//
//    @Autowired
//    private IMcrCouponApiService mcrCouponApiService;
//
//
////    /**
//     * 日期参数绑定
//     * @param binder
//     */
//    @InitBinder
//    public void initBinder(ServletRequestDataBinder binder){
//        CustomDateEditor customDateEditor = new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true);
//        binder.registerCustomEditor(Date.class, customDateEditor);
//    }
//
//    /**
//     * 到列表页面
//     */
//    @RequestMapping("/toListPage.do")
//    public ModelAndView toListPage() {
//        ModelAndView view = new ModelAndView("/mcr/mcrCouponMain/mcrCouponMainList");
//        BaseLogUtils.info(logger, "toListPage", "跳转到列表页面.", CurrentThreadContext.getCurrentUserName());
//        return view;
//    }
//
//    /**
//     * 到添加页面
//     */
//    @RequestMapping("/toAddPage.do")
//    public ModelAndView toAddPage(Long id) {
//        ModelAndView view = new ModelAndView("/mcr/mcrCouponMain/mcrCouponMainAdd");
//        BaseLogUtils.info(logger, "toAddPage", "跳转到新增页面, [id="+id+"]", CurrentThreadContext.getCurrentUserName());
//        view.addObject("id", id);
//        return view;
//    }
//
//    /**
//     * 到修改页面
//     */
//    @RequestMapping("/toModifyPage.do")
//    public ModelAndView toModifyLgsPage(Long cpId) {
//        ModelAndView view = new ModelAndView("/mcr/mcrCouponMain/mcrCouponMainModify");
//        BaseLogUtils.info(logger, "toModifyPage", "跳转到修改页面, [cpId="+cpId+"]", CurrentThreadContext.getCurrentUserName());
//        view.addObject("cpId", cpId);
//        return view;
//    }
//
//    /**
//     * 到上传页面
//     */
//    @RequestMapping("/toImportPage.do")
//    public ModelAndView toImportPage(Long cpId) {
//        ModelAndView view = new ModelAndView("mcr/mcrCouponMain/mcrCouponMainImport");
//        BaseLogUtils.info(logger, "toImportPage", "跳转到上传页面, [cpId="+cpId+"]", CurrentThreadContext.getCurrentUserName());
//        view.addObject("cpId", cpId);
//        return view;
//    }
//
//    /**
//     * 下载模板
//     */
//    @RequestMapping("/download.do")
//    public DataResultVO download(HttpServletRequest request, HttpServletResponse response) {
//        BaseLogUtils.info(logger, "download", "下载模板", CurrentThreadContext.getCurrentUserName());
//        DataResultVO vo =new DataResultVO(IsSuccessType.SUCCESS.getCode(),"模板获取成功");
//        String tempPath = FileUtil.getSavePath("template/mcr/mcrCouponMainTemplate.xlsx");
//        tempPath = tempPath.replace(
//                PropertiesCacheUtils.getProperty(SysUlFilesRecConstant.SYS_FILE_UPLOAD_ROOT_PATH),
//                PropertiesCacheUtils.getProperty(SysUlFilesRecConstant.SYS_FILE_UPLOAD_SERVER_PATH));
//        vo.setData(tempPath);
//        BaseLogUtils.info(logger, "download", " 下载模板, tempPath" + tempPath, CurrentThreadContext.getCurrentUserName());
//        return vo;
//    }
//
//    /**
//     * 列表数据
//     * @param page
//     * @param pagesize
//     * @return
//     */
//    @RequestMapping("/initList.do")
//    public ListPageVO initList(@RequestParam(defaultValue = "1") Integer page,
//                        @RequestParam(defaultValue = "10")Integer pagesize,
//                        McrCouponMainQC qc) {
//        // 查询
//        Pager queryPager = new Pager();
//        queryPager.setCurrentPage(page);
//        queryPager.setEveryPage(pagesize);
//        queryPager.setCondition(qc);
//        BaseLogUtils.info(logger, "initList", "获取列表, queryPager:" + JSONObject.toJSONString(queryPager),
//                CurrentThreadContext.getCurrentUserName());
//
//        // 初始化返回数据
//        Integer totalCount = 0;
//        List<McrCouponDTO> resultList = new ArrayList<>();
//        try {
//            BaseLogUtils.info(logger, "initList", "API获取列表, queryPager:" + JSONObject.toJSONString(queryPager));
//            DataResultDTO dataResultDTO = null;
//            BaseLogUtils.info(logger, "initList", "API获取列表, dataResultDTO:" + JSONObject.toJSONString(dataResultDTO));
//
//            if (dataResultDTO != null && dataResultDTO.getSuccess() == IsSuccessType.SUCCESS.getCode()) {
//                Map<String, Object> resultMap = (Map<String, Object>)dataResultDTO.getData();
//                totalCount = (Integer) resultMap.get("totalCount");
//                resultList = (List<McrCouponDTO>) resultMap.get("resultList");
//            }
//
//        } catch (BaseException e) {
//            BaseLogUtils.error(logger, "initList", "获取列表异常, queryPager:" + JSONObject.toJSONString(queryPager),
//                    CurrentThreadContext.getCurrentUserName(), e);
//        }
//
//        // 返回数据
//        ListPageVO<McrCouponDTO> listPageVO = new ListPageVO<>(resultList, totalCount);
//        BaseLogUtils.info(logger, "initList", "获取列表, listPageVO:" + JSONObject.toJSONString(listPageVO),
//                CurrentThreadContext.getCurrentUserName());
//        return listPageVO;
//    }
//
//    /**
//     * 单条新增新增数据
//     * @return
//     */
//    @RequestMapping("/add.do")
//    public DataResultVO add(McrCouponDTO coupon) {
//        DataResultVO resultVO = new DataResultVO(IsSuccessType.FAIL.getCode());
//
//        BaseLogUtils.info(logger, "add", "添加数据, vo:" + JSONObject.toJSONString(coupon));
//
//        coupon.setStatus(CouponStatusType.READY.getCode());
//        coupon.setIsExpired(IsExpiredType.NOT_EXPIRED.getCode());
//        coupon.setIsValid(IsValidType.VALID.getCode());
//        coupon.setIsDel(IsDeleteType.UN_DELETE.getCode());
//        coupon.setCrtUsrId(CurrentThreadContext.getCurrentUserId());
//        coupon.setCrtTm(new Date());
//
//        BaseLogUtils.info(logger, "add", "添加数据, coupon:" + JSONObject.toJSONString(coupon));
//
//        List<McrCouponRuleDTO> ruleList = coupon.getRuleList();
//        for (McrCouponRuleDTO ruleDTO : ruleList) {
//            ruleDTO.setIsDel(IsDeleteType.UN_DELETE.getCode());
//            ruleDTO.setCrtUsrId(CurrentThreadContext.getCurrentUserId());
//            ruleDTO.setCrtTm(new Date());
//        }
//
//        BaseLogUtils.info(logger, "add", "添加数据, ruleList:" + JSONObject.toJSONString(ruleList));
//
//        try {
//            DataResultDTO dataResultDTO = null;
//            BaseLogUtils.info(logger, "add", "API添加数据, dataResultDTO:" + JSONObject.toJSONString(dataResultDTO));
//            resultVO.setSuccess(dataResultDTO.getSuccess());
//            resultVO.setInfo(dataResultDTO.getInfo());
//            resultVO.setData(dataResultDTO.getData());
//        } catch (BaseException e) {
//            BaseLogUtils.error(logger, "add", "添加数据异常, coupon:" + JSONObject.toJSONString(coupon),
//                    CurrentThreadContext.getCurrentUserName(), e);
//            resultVO.setInfo("新增优惠券异常");
//        }
//        BaseLogUtils.info(logger, "add", "添加数据, resultVO:" + JSONObject.toJSONString(resultVO));
//        return resultVO;
//    }
//
//    /**
//     * 主键获取
//     * @return
//     */
//    @RequestMapping("/getById.do")
//    public DataResultVO getById(Long cpId) {
//        DataResultVO resultVO = new DataResultVO(IsSuccessType.FAIL.getCode());
//
//        BaseLogUtils.info(logger, "getById", "查询数据, cpId:" + cpId);
//
//        McrCouponDTO couponDTO = null;
//        try {
//            McrCouponMainQC couponMainQC = new McrCouponMainQC();
//            couponMainQC.setId(cpId);
//            couponMainQC.setIsDel(IsDeleteType.UN_DELETE.getCode());
//            BaseLogUtils.info(logger, "getById", "API查询数据, couponDTO:" + JSONObject.toJSONString(couponDTO));
//            List<McrCouponDTO> couponDTOList = null;
//            BaseLogUtils.info(logger, "getById", "API查询数据, mcrCouponDTOList:" + JSONObject.toJSONString(couponDTOList));
//            if(CollectionUtils.isEmpty(couponDTOList)){
//                resultVO.setInfo("不存在此优惠券！");
//            }else{
//                couponDTO = couponDTOList.get(0);
//            }
//        } catch (BaseException e) {
//            BaseLogUtils.error(logger, "getById", "数据查询异常, cpId:" + cpId,
//                    CurrentThreadContext.getCurrentUserName(), e);
//            resultVO.setInfo("不存在此优惠券！");
//            return resultVO;
//        }
//
//        resultVO.setData(couponDTO);
//        BaseLogUtils.info(logger, "getById", "查询数据, resultVO:" + JSONObject.toJSONString(resultVO));
//        return resultVO;
//    }
//
//    /**
//     * 单条数据修改
//     * @return
//     */
//    @RequestMapping("/modify.do")
//    public DataResultVO modify(McrCouponDTO coupon) {
//
//        DataResultVO resultVO = new DataResultVO(IsSuccessType.FAIL.getCode());
//
//        BaseLogUtils.info(logger, "modify", "修改数据, vo:" + JSONObject.toJSONString(coupon));
//
//        coupon.setMdfUsrId(CurrentThreadContext.getCurrentUserId());
//        coupon.setMdfTm(new Date());
//
//        BaseLogUtils.info(logger, "modify", "修改数据, coupon:" + JSONObject.toJSONString(coupon));
//
//        List<McrCouponRuleDTO> ruleList = coupon.getRuleList();
//        for (McrCouponRuleDTO ruleDTO : ruleList) {
//            ruleDTO.setMdfUsrId(CurrentThreadContext.getCurrentUserId());
//            ruleDTO.setMdfTm(new Date());
//        }
//
//        BaseLogUtils.info(logger, "modify", "修改数据, ruleList:" + JSONObject.toJSONString(ruleList));
//
//        try {
//            DataResultDTO dataResultDTO = null;
//            BaseLogUtils.info(logger, "modify", "API修改数据, dataResultDTO:" + JSONObject.toJSONString(dataResultDTO));
//
//            resultVO.setSuccess(dataResultDTO.getSuccess());
//            resultVO.setInfo(dataResultDTO.getInfo());
//            resultVO.setData(dataResultDTO.getData());
//        } catch (BaseException e) {
//            BaseLogUtils.error(logger, "modify", "修改数据异常, coupon:" + JSONObject.toJSONString(coupon),
//                    CurrentThreadContext.getCurrentUserName(), e);
//            resultVO.setInfo("修改优惠券异常");
//        }
//        BaseLogUtils.info(logger, "modify", "修改数据, resultVO:" + JSONObject.toJSONString(resultVO));
//        return resultVO;
//    }
//
//    /**
//     * 批量上传
//     * @param cpId
//     * @param filePath
//     * @return
//     */
//    @RequestMapping("/import.do")
//    public DataResultVO importBatch(Long cpId, String filePath){
//        DataResultVO resultVO = new DataResultVO(IsSuccessType.FAIL.getCode());
//        BaseLogUtils.info(logger, "importBatch", "批量上传, cpId:" + cpId + ", filePath:" + filePath, CurrentThreadContext.getCurrentUserName());
//
//        try {
//            String rootPath = PropertiesCacheUtils.getProperty(SysUlFilesRecConstant.SYS_FILE_UPLOAD_ROOT_PATH);
//            String realPath = rootPath + filePath;
//            BaseLogUtils.info(logger, "importBatch", "批量上传, realPath:" + realPath, CurrentThreadContext.getCurrentUserName());
//
//            ImportParams params = new ImportParams();
////            params.setTitleRows(1);//标题占用行数
//            params.setHeadRows(1);//表头占用行数
//            params.setNeedSave(false);//是否保存文件
//
//            List<Long> cstIdList = new ArrayList<>();
//            File file = new File(realPath);
//            if (file.exists()) {
//                BaseLogUtils.info(logger, "importBatch", "批量上传, Excel文件存在");
//                List<McrCouponTableVO> tableVOList = ExcelImportUtil.importExcel(file, McrCouponTableVO.class, params);
//                BaseLogUtils.info(logger, "importBatch", "批量上传, voList:" + JSON.toJSONString(tableVOList));
//                if(CollectionUtils.isNotEmpty(tableVOList)){
//                    for (McrCouponTableVO couponTableVO : tableVOList) {
//                        cstIdList.add(couponTableVO.getCstId());
//                    }
//                }
//            }
//
//            BaseLogUtils.info(logger, "importBatch", "API批量上传, cstIdList:" + JSON.toJSONString(cstIdList));
//            DataResultDTO dataResultDTO = null;
//            BaseLogUtils.info(logger, "importBatch", "API批量上传异常, dataResultDTO:" + JSONObject.toJSONString(dataResultDTO));
//            resultVO.setSuccess(dataResultDTO.getSuccess());
//            resultVO.setInfo(dataResultDTO.getInfo());
//            resultVO.setData(dataResultDTO.getData());
//
//        } catch (Exception e) {
//            BaseLogUtils.error(logger, "importBatch", "批量上传异常, filePath:" + filePath,
//                    CurrentThreadContext.getCurrentUserName(), e);
//            resultVO.setSuccess(IsSuccessType.FAIL.getCode());
//            resultVO.setInfo("批量上传失败！");
//        }
//        BaseLogUtils.info(logger, "importBatch", "批量上传, resultVO:" + JSONObject.toJSONString(resultVO));
//        return resultVO;
//    }
//
//    /**
//     * 批量删除回显数据
//     * @param redIdList
//     * @return
//     */
//    @RequestMapping("/delete.do")
//    public DataResultVO delete(List<Long> redIdList){
//        DataResultVO resultVO = new DataResultVO(IsSuccessType.FAIL.getCode());
//        BaseLogUtils.info(logger, "delete", "批量删除, redIdList:" + JSONObject.toJSONString(redIdList), CurrentThreadContext.getCurrentUserName());
//        try {
//            DataResultDTO dataResultDTO = null;
//            BaseLogUtils.info(logger, "delete", "API批量删除异常, dataResultDTO:" + JSONObject.toJSONString(dataResultDTO));
//            resultVO.setSuccess(dataResultDTO.getSuccess());
//            resultVO.setInfo(dataResultDTO.getInfo());
//            resultVO.setData(dataResultDTO.getData());
//        } catch (BaseException e) {
//            BaseLogUtils.error(logger, "delete", "批量删除异常",
//                    CurrentThreadContext.getCurrentUserName(), e);
//            resultVO.setSuccess(IsSuccessType.FAIL.getCode());
//            resultVO.setInfo("批量删除异常！");
//        }
//        BaseLogUtils.info(logger, "delete", "批量删除, resultVO:" + JSONObject.toJSONString(resultVO));
//        return resultVO;
//    }
//
//
//    /**
//     * 修改状态
//     * @param cpId
//     * @param newStatus
//     * @return
//     */
//    @RequestMapping("/updStatus.do")
//    public DataResultVO updStatus(Long cpId, Integer newStatus){
//        DataResultVO resultVO = new DataResultVO(IsSuccessType.FAIL.getCode());
//        BaseLogUtils.info(logger, "updStatus", "修改状态, cpId:" + cpId + ", newStatus:" + newStatus);
//        try {
//            DataResultDTO dataResultDTO = null;
//            BaseLogUtils.info(logger, "updStatus", "API修改状态, dataResultDTO:" + JSONObject.toJSONString(dataResultDTO));
//            resultVO.setSuccess(dataResultDTO.getSuccess());
//            resultVO.setInfo(dataResultDTO.getInfo());
//            resultVO.setData(dataResultDTO.getData());
//        } catch (BaseException e) {
//            BaseLogUtils.error(logger, "updStatus", "修改状态, cpId:" + cpId + ", newStatus:" + newStatus,
//                    CurrentThreadContext.getCurrentUserName(), e);
//            resultVO.setSuccess(IsSuccessType.FAIL.getCode());
//            resultVO.setInfo("修改状态失败！");
//        }
//        BaseLogUtils.info(logger, "updStatus", "修改状态, resultVO:" + JSONObject.toJSONString(resultVO));
//        return resultVO;
//    }
//
//
//
//
//}
